package day06;

import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/*
常用的类：
Math：数学方法、常量PI
Random/SecureRandom：生成随机数
Date：日期
 */
public class Demo03 {
    public static void main(String[] args) {
        System.out.println("========Math============");
        System.out.println(Math.PI);
        System.out.println(Math.pow(2, 3)); // 2的3次方。
        System.out.println(Math.sqrt(2)); // 2开平方。

        System.out.println("==========Random=============");
        /*
        Random:随机数，一般用系统时间作为种子来生成随机数。
               根据之前生成的随机数，容易预测后一个随机数。不安全。
        SecureRandom:安全随机数，使用的算法复杂，不易预测。
         */
        // Random random = new Random();
        SecureRandom random = new SecureRandom();
        // int的取值范围内随机一个数
        for (int i = 0; i < 10; i++) {
            System.out.print(random.nextInt() + " ");
        }
        System.out.println();
        // 在0~10之间取随机数，包含0，不包含10
        for (int i = 0; i < 10; i++) {
            System.out.print(random.nextInt(10) + " ");
        }
        System.out.println();
        // 0~1之间随机
        for (int i = 0; i < 10; i++) {
            System.out.print(random.nextFloat() + " ");
        }
        System.out.println();

        System.out.println("=============Date====================");
        /*
        日期：
            1. 记录日志，系统当前日期作为文件名，或者在日志中记录系统当前的时间，方便定位问题。
            2. 性能，可以在方法前后，将时间打印下来，计算这个方法执行消耗了多少时间。
            3. 定时任务，在设置的时间内，看任务是否能启动。
               不能把时间写死。
               获取系统当前时间，在当前时间基础上加几分钟，作为定时任务的启动时间。
         */
        Date date = new Date(); // 创建当前时间的日期对象。
        System.out.println(date);

        // 格式化日期
        // 日期的格式：y年，yyyy年的长度为4，也就是用4位数来表示年
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        System.out.println(sdf.format(date));

        sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(date));

        // 日期转成时间戳，相对于1970-1-1 0:0:0 时间经过了多少秒/毫秒
        long t = date.getTime(); // 毫秒
        System.out.println("时间戳：" + t);

        t = t + 300000; // 给当前时间加5分钟
        Date date1 = new Date(t); // 用一个整数创建时间
        System.out.println(sdf.format(date1));
    }

}
